package entity

import (
	"time"

	"github.com/google/uuid"
	"gorm.io/datatypes"
	"gorm.io/gorm"
)

// Tool 工具基本信息实体（用于数据库存储和管理）
type Tool struct {
	ID          uuid.UUID `gorm:"type:uuid;primary_key;default:gen_random_uuid()"`
	Name        string    `gorm:"unique;not null;size:100"`
	DisplayName string    `gorm:"not null;size:200"`
	Description string    `gorm:"type:text"`

	// 状态
	IsEnabled bool `gorm:"not null;default:true"`

	// 统计信息
	UsageCount int64 `gorm:"default:0"`
	LastUsedAt *time.Time

	// 审计字段
	CreatedAt time.Time
	UpdatedAt time.Time

	// 新增：工具配置
	Config *datatypes.JSON `gorm:"type:json"`
}

// TableName 指定表名
func (Tool) TableName() string {
	return "tools"
}

// BeforeCreate GORM钩子
func (t *Tool) BeforeCreate(tx *gorm.DB) error {
	if t.ID == uuid.Nil {
		t.ID = uuid.New()
	}
	return nil
}

// UpdateUsage 更新使用统计
func (t *Tool) UpdateUsage() {
	t.UsageCount++
	now := time.Now()
	t.LastUsedAt = &now
}

// IsActive 检查工具是否激活
func (t *Tool) IsActive() bool {
	return t.IsEnabled
}
